﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kaidou.Model;
using Kaidou.Persister;
using Kaidou.Util;

namespace Kaidou.Bll
{
    public class TemplateManager
    {
        public static string getReport(Report report, LoginModel loginModel, System.Resources.ResourceManager rm)
        {
            StringBuilder sb = new StringBuilder();
            try
            {
                string area = rm.GetString("area");
                string[] areaArray = area.Split(',');
                string address = areaArray[report.getReportH().HallPrefCode - 1] + " " + report.getReportH().HallCity + " " + report.getReportH().HallAddress;

                MST_TraderPersister traderPer = new MST_TraderPersister();
                MstTrader trader = traderPer.getDetail(report.getReportH().TraderRegNo);

                String seal = "";
                if (report.getReportD() != null)
                {

                    for (int i = 0; i < 5; i++)
                    {
                        if (report.getReportD()[i] == null)
                            continue;
                        TrnReportd report_D = report.getReportD()[i];
                        seal += " " + report_D.SealStrNo;
                        seal += (StringUtil.isEmpty(report_D.SealEndNo) ? "      " : "  ～  " + report_D.SealEndNo + "                  ");
                        seal += (TrnReporth.MACHINE_CLSS_NEW.Equals(report_D.MachineClss) ? "新　台" : "中古台") + "\n";
                    }
                }

                String[] worker = new String[6];

                worker[0] = report.getReportH().Worker1Name;
                worker[1] = report.getReportH().Worker2Name;
                worker[2] = report.getReportH().Worker3Name;
                worker[3] = report.getReportH().Worker4Name;
                worker[4] = report.getReportH().Worker5Name;
                worker[5] = report.getReportH().Worker6Name;

                String workStr = "";

                for (int i = 0; i < 6; i++)
                {
                    if (StringUtil.isEmpty(worker[i]))
                        continue;
                    if (i != 0)
                        workStr += "                     ";
                    workStr += worker[i] + "\n";
                }

                string TraderRegNo = "";
                if (!StringUtil.isEmpty(report.getReportH().TraderRegNo))
                {
                    TraderRegNo = report.getReportH().TraderRegNo.Substring(0, 2) + "-" + report.getReportH().TraderRegNo.Substring(2, 5);
                }

                string ChiefNo = "";
                if (!StringUtil.isEmpty(report.getReportH().ChiefNo))
                {
                    ChiefNo = report.getReportH().ChiefNo.Substring(0, 2) + "-" + report.getReportH().ChiefNo.Substring(2,4);
                }
                

                //sb.Append("[回胴遊商]ご報告受け付けました。").Append("\n");
                sb.Append("＊＊＊＊＊ [回胴遊商] 確認シール報告 確認メール　＊＊＊＊＊").Append("\n");
                sb.Append("\n");
                sb.Append(loginModel.Parent.OfficeName + " 御中").Append("\n");
                sb.Append("\n");
                sb.Append("下記のご報告内容をご確認ください。").Append("\n");
                sb.Append("\n");
                sb.Append("[報告者]").Append("\n");
                sb.Append("\n");
                sb.Append(" 組合員コード：　　　" + loginModel.Unioncode).Append("\n");
                sb.Append(" 組合員名：　　　　　" + loginModel.Parent.OfficeName).Append("\n");
                sb.Append(" 支店名：　　　　　　" + loginModel.OfficeName).Append("\n");
                sb.Append(" 報告担当者：　　　　" + report.getReportH().ReportTantoName + "様").Append("\n");
                String EST_COMP_CLSS = "";
                if (TrnReporth.EST_COMP_CLSS_OTHER.Equals(report.getReportH().EstCompClss))
                {

                    EST_COMP_CLSS += " 当社は、遊技機の販売および設置作業を下記の業者に委託し、実施しました。\n";
                    EST_COMP_CLSS += " 委託販売会社名：" + report.getReportH().ConsCompName + "\n";
                    EST_COMP_CLSS += " 電話番号：      " + report.getReportH().ConsCompTelno + "\n";

                }
                else
                {
                    EST_COMP_CLSS = " 当社は、遊技機の設置作業を下記の通り実施しました。 ";
                }
                sb.Append("\n");
                sb.Append(EST_COMP_CLSS).Append("\n");
                sb.Append("\n");
                sb.Append("[設置作業内容]").Append("\n");
                sb.Append("\n");
                sb.Append(" 報告日：　　　　　　" + report.getReportH().ReportDate.ToString("yyyy年MM月dd日 HH時mm分")).Append("\n");
                sb.Append(" 報告番号：　　　　　" + report.getReportH().ReportNo).Append("\n");
                sb.Append(" 設置ホール：　　　　" + report.getReportH().HallName).Append("\n");
                sb.Append("　　　　　　　　　　 " + address).Append("\n");
                sb.Append("　　　　　　　　　　 TEL " + report.getReportH().HallTel).Append("\n");
                sb.Append(" 設置遊技機型式名：　" + report.getReportH().MachineName).Append("\n");
                sb.Append(" 設置台数：　　　　　" + report.getReportH().MachineQty.ToString()).Append("台\n");
                sb.Append(" 設置日：　　　　　　" + report.getReportH().EstDate.ToString("yyyy年MM月dd日")).Append("\n");
                sb.Append(" 販売業者登録証番号：第" + TraderRegNo + "号").Append("\n");
                sb.Append(" 設置業者名：　　　　" + (trader == null ? "" : trader.TraderName)).Append("\n");
                sb.Append(" 取扱主任者証：　　　第" + ChiefNo + "号").Append("\n");
                sb.Append(" 取扱主任者名：　　　" + report.getReportH().ChiefName).Append("\n");
                sb.Append(" 作業従事者名：　　　" + workStr).Append("\n");
                
                sb.Append("\n");
                sb.Append(" 確認シール番号  ").Append("\n");
                sb.Append("-------------------------------------------------- ").Append("\n");
                sb.Append(seal).Append("\n");
                sb.Append("-------------------------------------------------- ").Append("\n");
                sb.Append("").Append("\n");
                sb.Append("").Append("\n");
                sb.Append("このメールに記載された内容の変更はできません。").Append("\n");
                sb.Append("問い合わせは下記までご連絡ください。").Append("\n");
                sb.Append("").Append("\n");
                sb.Append("===========================================================").Append("\n");
                sb.Append("回胴式遊技機商業協同組合　事務局 ").Append("\n");
                sb.Append("TEL 03-3834-3855").Append("\n");
                sb.Append("kakuninseal@kaidou.or.jp").Append("\n");
                sb.Append("===========================================================");
            }catch(Exception e1){
                LogManager.error("TemplateManager getReport "+e1.Message+e1.StackTrace);
            }
            return sb.ToString();
        }

        public static string getOrder(Order order,LoginModel loginModel){
            StringBuilder sb = new StringBuilder();
            try
            {
                string non_check = "指定なし";
                string am_check = "午前";
                string pm_check = "午後";
                MST_TraderPersister traderPer = new MST_TraderPersister();
               

                //------------------------------------------------------------------------

                int dengluzhengSize = 18;
                int huishemingSize = 45;
                int numberSize = 10;

                int numSpace;
                string strSpace;
                string yinzinasi = "印字なし";
                //  int aaa = System.Text.Encoding.Default.GetByteCount(yinzinasi);

                StringBuilder ssb = new StringBuilder();
                numSpace = (dengluzhengSize + huishemingSize) - System.Text.Encoding.Default.GetByteCount(yinzinasi);
                strSpace = "".PadRight(numSpace, ' ');
                ssb.Append(yinzinasi).Append(strSpace);

                string pYizinasi = "";
                if (order.getJuchu_D()[0] != null)
                {
                    if (order.getJuchu_D()[0].SealQty != 0)
                    {
                        pYizinasi = order.getJuchu_D()[0].SealQty.ToString();
                    }
                }

                numSpace = numberSize - System.Text.Encoding.Default.GetByteCount(pYizinasi);
                strSpace = "".PadRight(numSpace, ' ');
                ssb.Append(strSpace).Append(pYizinasi).Append("\n");


                //loop begin

                for (int i = 1; i < 5; i++)
                {
                    if (order.getJuchu_D()[i] == null)
                        continue;
                    MstTrader trader = traderPer.getDetail(order.getJuchu_D()[i].TraderRegNo);
                    if (trader == null)
                        continue;
                   
                    string sDengluzhenhao = order.getJuchu_D()[i].TraderRegNo.Substring(0, 2) + "-" + order.getJuchu_D()[i].TraderRegNo.Substring(2, 5); //登録証番号
                    numSpace = dengluzhengSize - System.Text.Encoding.Default.GetByteCount(sDengluzhenhao);
                    strSpace = "".PadRight(numSpace, ' ');
                    ssb.Append(sDengluzhenhao).Append(strSpace);

                    string sHuisheming = trader.TraderName; //会社
                    numSpace = huishemingSize - System.Text.Encoding.Default.GetByteCount(sHuisheming);
                    strSpace = "".PadRight(numSpace, ' ');
                    ssb.Append(sHuisheming).Append(strSpace);

                    string pMeishu = order.getJuchu_D()[i].SealQty.ToString(); //枚数 
                    numSpace = numberSize - System.Text.Encoding.Default.GetByteCount(pMeishu);
                    strSpace = "".PadRight(numSpace, ' ');

                    ssb.Append(strSpace).Append(pMeishu).Append("\n");
                }

               //loop end


                string heji = "合計";

                numSpace = (dengluzhengSize + huishemingSize) - System.Text.Encoding.Default.GetByteCount(heji);
                strSpace = "".PadRight(numSpace, ' ');
                ssb.Append(heji).Append(strSpace);

                string pHejiMeishu = order.getTotal_seal_qty().ToString(); //枚数 
                numSpace = numberSize - System.Text.Encoding.Default.GetByteCount(pHejiMeishu);
                strSpace = "".PadRight(numSpace, ' ');
                ssb.Append(strSpace).Append(pHejiMeishu);


                //------------------------------------------------------------------------


               // sb.Append("[回胴遊商]ご注文受け付けました。").Append("\n");
                sb.Append("\n");
                sb.Append("＊＊＊＊＊ [回胴遊商] 確認シール注文 確認メール　＊＊＊＊＊").Append("\n");
                sb.Append("\n");
                sb.Append(loginModel.ParentOfficeName + " 御中").Append("\n");
                sb.Append("\n");
                sb.Append("下記のご注文内容で受付しました。").Append("\n");
                sb.Append("\n");
                sb.Append("このメールに記載された内容の取り消しおよび枚数の変更はできません。").Append("\n");
                sb.Append("注文、発送に関する問い合わせは事務局までご連絡ください。").Append("\n");
                sb.Append("\n");
                sb.Append("[注文者]").Append("\n");
                sb.Append("\n");
                sb.Append(" 組合員コード：" + loginModel.Unioncode).Append("\n");
                sb.Append(" 組合員名：　　" + loginModel.Parent.OfficeName).Append("\n");
                sb.Append(" 支店名：　　　" + loginModel.OfficeName).Append("\n");
                sb.Append(" 報告担当者：　" + order.getJuchu_H().JuchuTantoName + "様").Append("\n");
                sb.Append("\n");
                sb.Append("[注文内容]").Append("\n");
                sb.Append("\n");

                sb.Append(" 注文日：　　　" + ((DateTime)(order.getJuchu_H().JuchuDate)).ToString("yyyy年MM月dd日 HH時mm分")).Append("\n");
                sb.Append(" 注文番号：　　" + order.getJuchu_H().JuchuNo).Append("\n");
                sb.Append(" 送付先：　　　" + loginModel.Office_zip_no11 +"-"+ loginModel.Office_zip_no21).Append("\n");
                sb.Append("　　　　　　　 " + loginModel.Office_pref1).Append("\n");
                sb.Append("　　　　　　　 " + loginModel.Office_address1).Append("\n");
                sb.Append("　　　　　　 　TEL " + loginModel.Office_tel1).Append("\n");
                sb.Append("　　　　　　　 FAX " + loginModel.Office_fax1).Append("\n");
                sb.Append("\n");
                sb.Append(" 配達希望日：  " + (order.getJuchu_H().HopeDate == null ? non_check : (((DateTime)(order.getJuchu_H().HopeDate)).ToString("yyyy年MM月dd日")) + "  配達希望時間帯：" + (order.getJuchu_H().getHope_time_clss_mozi()))).Append("\n");
                sb.Append("\n");
                sb.Append(" 登録証番号       会社名                                             枚数 ").Append("\n");
                sb.Append("--------------------------------------------------------------------------").Append("\n");
                sb.Append(ssb.ToString());
                sb.Append("\n");
                sb.Append("===============================================").Append("\n");
                sb.Append("回胴式遊技機商業協同組合　事務局 ").Append("\n");
                sb.Append("TEL 03-3834-3855 ").Append("\n");
                sb.Append("kakuninseal@kaidou.or.jp").Append("\n");
                sb.Append("===============================================");
                LogManager.info(sb.ToString());
            }catch(Exception e1){
                LogManager.error("TemplateManager getOrder "+e1.Message+e1.StackTrace);
            }

return sb.ToString();
        }

        
    }
}
